package com.linktco.common.utils.excel.style;

import org.apache.poi.ss.usermodel.*;

/**
 * 表格列样式
 * @author zhangnx
 */
public class DefaultStyle {


    public static CellStyle headerStyle(CellStyle cellStyle,Font font) {
        //边框样式
        setBorderColor(cellStyle,BorderStyle.MEDIUM,IndexedColors.AQUA);
        //单元格样式
        setCellStyle(cellStyle,HorizontalAlignment.CENTER,null,null);

        //设置字体样式
        font = getFontStyle(font, (short) 13, true, IndexedColors.BLACK);
        cellStyle.setFont(font);

        return cellStyle;
    }


    public static CellStyle dataStyle(CellStyle cellStyle,Font font) {
        //边框样式
        setBorderColor(cellStyle,BorderStyle.MEDIUM,IndexedColors.AQUA);
        //单元格样式
        setCellStyle(cellStyle,HorizontalAlignment.CENTER,null,null);

        //设置字体样式
        font = getFontStyle(font, (short) 10, false, IndexedColors.BLACK);
        cellStyle.setFont(font);

        return cellStyle;
    }



    public static CellStyle totalStyle(CellStyle cellStyle,Font font) {
        //边框样式
        setBorderColor(cellStyle,BorderStyle.DASHED,IndexedColors.BLACK1);
        //单元格样式
        setCellStyle(cellStyle,HorizontalAlignment.CENTER,null,null);

        //设置字体样式
        font = getFontStyle(font, (short) 12, true, IndexedColors.BLACK1);
        cellStyle.setFont(font);

        return cellStyle;
    }





    /**
     * 边框样式
     * @param style
     * @param border
     * @param color
     * @return
     */
    public static CellStyle setBorderColor(CellStyle style,BorderStyle border,IndexedColors color){
        //设置右边框
        style.setBorderRight(border);
        //设置右边框颜色
        style.setRightBorderColor(color.getIndex());

        //设置左边框
        style.setBorderLeft(border);
        //设置左边框颜色
        style.setLeftBorderColor(color.getIndex());

        //设置上边框
        style.setBorderTop(border);
        //设置上边框颜色
        style.setTopBorderColor(color.getIndex());

        //设置下边框
        style.setBorderBottom(border);
        //设置下边框颜色
        style.setBottomBorderColor(color.getIndex());

        return style;
    }





    /**
     * 设置单元格样式
     * @param style
     * @param alignment 文字对齐方式
     * @param fillPattern 单元格填充样式
     * @param color  单元格填充颜色
     * @return
     */
    public static CellStyle setCellStyle(CellStyle style,HorizontalAlignment alignment,FillPatternType fillPattern,IndexedColors color) {
        //设置单元格水平对齐方式
        style.setAlignment(alignment);
        //设置单元格垂直对齐方式
        style.setVerticalAlignment(VerticalAlignment.CENTER);

		//自动换行
		style.setWrapText(false);

        //设置前景颜色
        if (color!=null) {
            style.setFillForegroundColor(color.getIndex());
        }
        //设置前景的风格样式
        if (fillPattern!=null) {
            style.setFillPattern(fillPattern);
        }

        return style;
    }



    /**
     * 字体样式
     * @param fontSize 文字大小
     * @param isBold 是否粗体
     * @param color 文字颜色
     * @return
     */
    public static Font getFontStyle(Font font,int fontSize,boolean isBold,IndexedColors color) {
        font.setFontName("Arial");
        font.setFontHeightInPoints((short)fontSize);
        font.setBold(isBold);
        font.setColor(color.getIndex());
        return font;
    }




}
